#Include "Protheus.ch"
#Include "TopConn.ch"
#include "TOTVS.CH"
#INCLUDE 'RWMAKE.CH'
#INCLUDE 'TBICONN.CH'
#INCLUDE 'Fileio.ch'

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±G±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±º                         FICHA TECNICA DO PROGRAMA                         º±±
±±ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¹±±
±±ºPrograma         ³ FSW05M02.PRW   										 		 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¹±±
±±ºDescricso        ³ CALCULO PONTO DE PEDIDO E ESTOQUE SEGURANCA              ±±
±±º                 ³ 														        º±±
±±ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¹±±
±±ºAutor            ³   Cesar 					                                 º±±
±±ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¹±±
±±ºData de Criacao  ³ 21/05/2013											        º±±
±±ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ¹±±
±±ºATUALIZACOES                                                               º±±
±±ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍ¹±±
±±ºDescricao detalhada da atualizacao ³ Nome do      ³ Analista   ³ Data da   º±±
±±º                                   ³ Solicitante  ³ Respons.   ³ Atualiz.  º±±
±±ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍ¹±±
±±ºImplementada da leitura do layout  ³              ³ Rodolfo S. ³ 21/05/2013º±±
±±ºpara importacao de fornecedores    ³              ³ Schmidt    ³           º±±
±±ÌÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍ¹±±
±±º                                   ³              ³            ³           º±±
±±º                                   ³              ³            ³           º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍ¼±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/

User Function FSW05M02()

Local bAcao := {|| pontoPed() }
Local cTitulo := 'Calculando Ponto de Pedido'
Local cMsg := 'Processando'
Local lAborta := .T.
Private cProdutos := ""

Processa( bAcao, cTitulo, cMsg, lAborta )	

return 


Static Function pontoPed()

Local cQuery := ""

		cQuery := " SELECT SB1.B1_COD , SB1.B1_ZNDPTPE, SB1.B1_ZNDESTS "
		cQuery += " FROM " + RetSqlName("SB1") + " SB1 "
		cQuery += " WHERE SB1.B1_FILIAL='"+xFilial("SB1")+ "' "
		cQuery += " AND SB1.D_E_L_E_T_ = ' ' "
		cQuery += " AND SB1.B1_ZLPTPED = 'T' "

		cQuery := ChangeQuery(cQuery)
		
		If Select("QRY") != 0
			QRY->(dbCloseArea())
		EndIf
				
		
		dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),"QRY",.T.,.T.)
		
		ProcRegua(QRY->(RecCount()))
		
	While !QRY->(Eof())
		
		CalcMedia(QRY->B1_COD, QRY->B1_ZNDPTPE, QRY->B1_ZNDESTS)	
		QRY->(dbSkip())
		INCPROC()
		
	enddo




Static Function CalcMedia(cCod, nDiasPTPed, nDiasEstSeg )

Local cAliasSD1	:= "SD1"
Local cAliasSD2	:= "SD2"
Local cAliasSD3	:= "SD3"
Local cAliasSB1	:= "SB1"
Local cAliasSB3	:= "SB3"
Local cIndex		:= ""
Local cCond		:= ""
Local cCondUsr  	:= ""
Local cMes			:= "B3_Q"+StrZero(Month(dDataBase),2)
Local cTipoCalcProd := GETMV("MV_TPCLCPR")

Local nTotCod   := 0
Local nCons	  := 0
Local nX		  := 0
Local nIndex    := 0

Local lRetPE		:= .F.
Local lConsumo  	:= .F.
Local lQuery		:= .F.
Local dDataIni  	:= Date() - nDiasPTPed
Local dDataFim  	:= LastDay(dDataBase)



//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Zera o arquivo de consumos antes de recalcular               ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SB3")

	If TcSrvType()<>"AS/400"
		lQuery	  := .T.
		cAliasSB3 := GetNextAlias()
		cAliasSB1 := cAliasSB3
		cQuery := "SELECT B3_FILIAL,B3_COD,SB3.R_E_C_N_O_ RECNOSB3 "
		cQuery += "FROM " + RetSqlName("SB3") + " SB3 "
		cQuery += "JOIN " + RetSqlName("SB1") + " SB1 "
		cQuery += "ON  B1_FILIAL = '" + xFilial("SB1") + "' "
		cQuery += "AND B1_COD = B3_COD "
		cQuery += "AND B1_COD = '"+cCod+"' "
		cQuery += "AND SB1.D_E_L_E_T_ = ' ' "
		cQuery += "WHERE SB3.B3_FILIAL='"+xFilial("SB3")+ "' "
		cQuery += "AND SB3.D_E_L_E_T_ = ' ' "

		cQuery := ChangeQuery(cQuery)
		
		dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasSB3,.T.,.T.)
		dbGoTop()

	EndIf

While !EOF()

	//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
	//³ Posiciona na tabela SB3 para gravar cMes   |
	//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
	If lQuery
		dbSelectArea("SB3")
		dbGoto((cAliasSB3)->RECNOSB3)
	Else
		dbSelectArea("SB1")
		dbSeek(xFilial("SB1")+(cAliasSB3)->B3_COD)

		dbSelectArea("SB3")
	EndIf
	

	dbSelectArea(cAliasSB3)
	dbSkip()

EndDo

If lQuery
	dbSelectArea(cAliasSB3)
	dbCloseArea()
EndIf

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Processa o arquivo SD2 -> Itens das notas fiscais de entrada ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SD2") // itens das notas fiscais de saida
dbSetOrder(1)

	If TcSrvType()<>"AS/400"
		cAliasSD2 := GetNextAlias()
		cQuery := "SELECT D2_FILIAL,D2_COD,D2_QUANT,D2_EMISSAO,D2_REMITO,D2_TES,D2_TIPO,D2_ORIGLAN,SD2.R_E_C_N_O_ RECNOSD2 "
		cQuery += "FROM "+RetSqlName("SD2")+" SD2 "

		cQuery += "JOIN " + RetSqlName("SB1") + " SB1 "
		cQuery += "ON  B1_FILIAL = '" + xFilial("SB1") + "' "
		cQuery += "AND B1_COD = D2_COD "
		cQuery += "AND B1_COD = '"+cCod+"' "
		cQuery += "AND SB1.D_E_L_E_T_ = ' ' "

		cQuery += "WHERE SD2.D2_FILIAL='"+xFilial("SD2")+ "' "
		//cQuery += "AND D2_LOCAL >= '"+mv_par01+"' AND D2_LOCAL <= '"+mv_par02+"' "
		cQuery += "AND D2_EMISSAO >= '" + DTOS(dDataIni)	+ "' "
		cQuery += "AND D2_EMISSAO <= '" + DTOS(dDataFim)	+ "' "
		cQuery += "AND D2_ORIGLAN <> 'LF' AND D2_TIPO IN ('N','B') "
		cQuery += "AND D2_REMITO = '"+CriaVar("D2_REMITO",.F.)+"' "
		cQuery += "AND SD2.D_E_L_E_T_=' ' "
	
		cQuery += " ORDER BY "+SqlOrder(SD2->(IndexKey()))
		cQuery := ChangeQuery(cQuery)
	
		dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasSD2,.T.,.T.)
		dbGoTop()
		
	Else
	
		cIndex:= CriaTrab(Nil,.F.)
		cCond := 'D2_FILIAL == "' + xFilial("SD2") + '" '
		cCond += '.And. D2_COD = "'+cCod+'" '
		//cCond += '.And. D2_LOCAL >= "'+mv_par01+'" .And. D2_LOCAL <= "'+mv_par02+'" '
		cCond += '.And. DTOS(D2_EMISSAO) >= "' + Dtos(dDataIni) + '" ' 
		cCond += '.And. DTOS(D2_EMISSAO) <= "' + Dtos(dDataFim) + '" '
		//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
		//³ Despreza Notas Fiscais Lancadas Pelo Modulo do Livro Fiscal  ³
		//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
		cCond += '.And. D2_ORIGLAN <> "LF" .And. D2_TIPO $ "NB" .And. Empty(D2_REMITO)' 

		IndRegua("SD2",cIndex,SD2->(indexKey()),,cCond,"")
		nIndex := RetIndex("SD2")
		
		dbSetIndex(cIndex+OrdBagExt())
		dbSetOrder(nIndex+1)
		dbGoTop()
		
	EndIf

While !EOF()

	cCod    := D2_COD
	If !lQuery
		dbSelectArea("SB1")
		dbSeek(xFilial("SB1")+cCod)
		dbSelectArea(cAliasSD2)
	EndIf	
	nTotCod := 0
	lConsumo:= .F.

	While !EOF() .And. (cAliasSD2)->D2_COD == cCod

		lConsumo:= .T.
		dbSelectArea("SF4")
		dbSeek(xFilial("SF4")+(cAliasSD2)->D2_TES)
		dbSelectArea(cAliasSD2)
		If SF4->F4_ESTOQUE == "S"

			//-- Nao permite remessa de poder de terceiros
			If SF4->F4_PODER3 == "D"
				dbSelectArea(cAliasSD2)
				dbSkip()
				Loop
			EndIf

			If (cAliasSD2)->D2_TES <= "500"
				nTotCod := nTotCod - (cAliasSD2)->D2_QUANT
			Else
				nTotCod := nTotCod + (cAliasSD2)->D2_QUANT
			EndIf
		EndIf
		
		dbSkip()
		
	EndDo
	
	dbSelectArea(cAliasSD2)
EndDo

If !lQuery
	RetIndex("SD2")
	dbClearFilter()
	Ferase(cIndex+OrdBagExt())
EndIf

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Processa o arquivo SD1 -> Itens das notas fiscais de Dev.Vdas³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SD1") // Itens das notas fiscais de entrada
dbSetOrder(5) //D1_FILIAL+D1_COD+D1_LOCAL


	If TcSrvType() <> "AS/400"
		cAliasSD1 := GetNextAlias()
		cQuery	   := "SELECT D1_FILIAL,D1_COD,D1_ORIGLAN,D1_TIPO,D1_REMITO,D1_DTDIGIT,D1_TES,D1_QUANT,SD1.R_E_C_N_O_ RECNOSD1 "
		cQuery    += "FROM "+RetSqlName("SD1")+" SD1 "

		cQuery += "JOIN " + RetSqlName("SB1") + " SB1 "
		cQuery += "ON  B1_FILIAL = '" + xFilial("SB1") + "' "
		cQuery += "AND B1_COD = D1_COD "
		cQuery += "AND B1_COD = '"+cCod+"' "
		cQuery += "AND SB1.D_E_L_E_T_ = ' ' "

		cQuery += "WHERE SD1.D1_FILIAL='"+xFilial("SD1")+ "' "
		//cQuery += "AND D1_LOCAL >= '"+mv_par01+"' AND D1_LOCAL <= '"+mv_par02+"' "
		cQuery += "AND D1_DTDIGIT >= '" + DTOS(dDataIni)	+ "' "
		cQuery += "AND D1_DTDIGIT <= '" + DTOS(dDataFim)	+ "' "
		cQuery += "AND D1_ORIGLAN <> 'LF' AND D1_TIPO IN ('D','B','N') "
		cQuery += "AND D1_REMITO  =  '"+CriaVar("D1_REMITO",.F.)+"' "
		cQuery += "AND SD1.D_E_L_E_T_=' ' "
		
		cQuery += " ORDER BY "+SqlOrder(SD1->(IndexKey()))
		cQuery := ChangeQuery(cQuery)
	
		dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasSD1,.T.,.T.)
		dbGoTop()
		
		//TcSetField(cAliasSD1,"D1_QUANT"   ,"N", TamSx3("D1_QUANT")[1]  , TamSx3("D1_QUANT")[2] )
		//TcSetField(cAliasSD1,"D1_DTDIGIT" ,"D", TamSx3("D1_DTDIGIT")[1], TamSx3("D1_DTDIGIT")[2] )
		
	Else

		cIndex := CriaTrab(Nil,.F.)
		cCond  := 'D1_FILIAL == "' + xFilial("SD1") + '" '
		cCond  += '.And. D1_COD = "'+cCod+'" '
		//cCond  += '.And. D1_LOCAL >= "'+mv_par01+'" .And. D1_LOCAL <= "'+mv_par02+'" '
		cCond  += '.And. DTOS(D1_DTDIGIT) >= "' + Dtos(dDataIni) + '" '
		cCond  += '.And. DTOS(D1_DTDIGIT) <= "' + Dtos(dDataFim) + '" '
		//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
		//³ Despreza Notas Fiscais Lancadas Pelo Modulo do Livro Fiscal  ³
		//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
		cCond += '.And. D1_ORIGLAN <> "LF" .And. D1_TIPO $ "D|B|N" .And. Empty(D1_REMITO)' 

		IndRegua("SD1",cIndex,SD1->(indexKey()),,cCond,"")
		nIndex := RetIndex("SD1")
		dbSetIndex(cIndex+OrdBagExt())
		dbSetOrder(nIndex+1)
		dbGoTop()	

	EndIf

While !EOF()

	cCod    := (cAliasSD1)->D1_COD
//	If !lQuery
//		dbSelectArea("SB1")
//		dbSeek(xFilial("SB1")+cCod)
//		If !MA290Filtro()
//			dbSelectArea(cAliasSD1)
//			dbSkip()
//			Loop
//		EndIf	
//		dbSelectArea(cAliasSD1)
//	EndIf	
	nTotCod	:= 0
	lConsumo	:= .F.

	While !EOF() .And. (cAliasSD1)->D1_COD == cCod
		
		lConsumo := .T.
		dbSelectArea("SF4")
		dbSeek(xFilial("SF4")+(cAliasSD1)->D1_TES)
		dbSelectArea(cAliasSD1)
		If SF4->F4_ESTOQUE == "S"
			//-- Valida se permite poder de terceiros na entrada
			If (cAliasSD1)->D1_TIPO $ 'B|N'
				If SF4->F4_PODER3 # "D"
					dbSelectArea(cAliasSD1)
					dbSkip()
					Loop
				EndIf
			EndIf	
			
			If (cAliasSD1)->D1_TES <= "500"
				nTotCod := nTotCod - (cAliasSD1)->D1_QUANT
			Else
				nTotCod := nTotCod + (cAliasSD1)->D1_QUANT
			EndIf

		EndIf
		
		dbSkip()

	
	EndDo
		
	dbSelectArea(cAliasSD1)
EndDo

If !lQuery
	RetIndex("SD1")
	dbClearFilter()
	Ferase(cIndex+OrdBagExt())
EndIf

//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Processa o arquivo SD3 -> Movimentacoes Internas             ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
dbSelectArea("SD3")	// Movimentacoes Internas
dbSetOrder(3)       // D3_FILIAL+D3_COD+D3_LOCAL

	If TcSrvType()<>"AS/400"
		cAliasSD3 := GetNextAlias()
		cQuery := "SELECT D3_FILIAL,D3_COD,D3_TM,D3_CF,D3_EMISSAO,D3_QUANT,SD3.R_E_C_N_O_ RECNOSD3 "
		cQuery += "FROM "+RetSqlName("SD3")+" SD3 "

		cQuery += "JOIN " + RetSqlName("SB1") + " SB1 "
		cQuery += "ON  B1_FILIAL = '" + xFilial("SB1") + "' "
		cQuery += "AND B1_COD = D3_COD "
		cQuery += "AND B1_COD = '"+cCod+"' "
		cQuery += "AND SB1.D_E_L_E_T_ = ' ' "

		cQuery += "WHERE SD3.D3_FILIAL='"+xFilial("SD3")+ "' "
		//cQuery += "AND D3_LOCAL >= '"+mv_par01+"' AND D3_LOCAL <= '"+mv_par02+"' "
		cQuery += "AND D3_EMISSAO >= '" + DTOS(dDataIni)	+ "' "
		cQuery += "AND D3_EMISSAO <= '" + DTOS(dDataFim)	+ "' "
		cQuery += "AND D3_CF <> 'DE8' AND  D3_CF  <>  'RE8' "
		//cQuery += IIf(mv_par06 == 2,"AND D3_DOC <> 'INVENT' ",'')
		cQuery += "AND SD3.D_E_L_E_T_=' ' "

		cQuery += " ORDER BY "+SqlOrder(SD3->(IndexKey()))
		cQuery := ChangeQuery(cQuery)
	
		dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasSD3,.T.,.T.)
		dbGoTop()
	
	Else

		cIndex := CriaTrab(Nil,.F.)
		cCond  := 'D3_FILIAL == "' + xFilial("SD3") + '" '
		cCond  += '.And. D3_COD = "' + cCod + '" '
		//cCond  += '.And. D3_LOCAL >= "' + mv_par01 + '" .And. D3_LOCAL <= "' + mv_par02+'" '
		cCond  += '.And. DTOS(D3_EMISSAO) >= "' + Dtos(dDataIni) + '" '
		cCond  += '.And. DTOS(D3_EMISSAO) <= "' + Dtos(dDataFim) + '" '
		//cCond  += IIf(mv_par06 == 2,'.And. D3_DOC <> "INVENT" ','')

		IndRegua("SD3",cIndex,SD3->(indexKey()),,cCond,"")
		nIndex := RetIndex("SD3")
		dbSetIndex(cIndex+OrdBagExt())
		dbSetOrder(nIndex+1)
		dbGoTop()	

	EndIf
	alert("1")

While !EOF() 

	cCod    := (cAliasSD3)->D3_COD
	nTotCod := 0
	lConsumo:= .F.
	alert("2")
	While !EOF() .And. (cAliasSD3)->D3_COD == cCod

		If Subs((cAliasSD3)->D3_CF,2,1) == "E" .And. !Substr((cAliasSD3)->D3_CF,3,1) $ "3478"
				
			If (cAliasSD3)->D3_TM <= "500"
				nTotCod := nTotCod - (cAliasSD3)->D3_QUANT
					alert("3")
			Else
				nTotCod := nTotCod + (cAliasSD3)->D3_QUANT
					alert("4")
			EndIf

		EndIf

		dbSkip()
	
	EndDo
		
		
	if cTipoCalcProd == "E" 
	
		SB1->(dbsetorder(1))
		SB1->(dbSeek(xFilial("SB1") + cCod))
		// GRAVA LOG
		RecLock("ZA1",  .T.)
		ZA1->ZA1_DATACL := DATE()
		ZA1->ZA1_CONMCA := nTotCod
		ZA1->ZA1_COD 	  := cCod
		ZA1->ZA1_EMINAN := SB1->B1_EMIN
		ZA1->ZA1_ESTSAN := SB1->B1_ESTSEG
		ZA1->ZA1_EMINAT := nTotCod * nDiasPTPed
		ZA1->ZA1_ESTSAT := nTotCod * nDiasEstSeg
		MSUnlock()
		
		RecLock("SB1" , .F.)
		SB1->B1_EMIN 		:= nTotCod * nDiasPTPed
		SB1->B1_ESTSEG 	:= nTotCod * nDiasEstSeg
		MSUnlock()
		
		alert((nTotCod * nDiasPTPed))
		
		GeraEmail(cCod, SB1->B1_EMIN, SB1->B1_ESTSEG , (nTotCod * nDiasPTPed), (nTotCod * nDiasEstSeg) )
	
	elseif cTipoCalcProd == "F"
		
		SBZ->(dbsetorder(1))
		SBZ->(dbSeek(xFilial("SBZ") + cCod))
		// GRAVA LOG
		RecLock("ZA1", .T.)
		ZA1->ZA1_DATACL := DATE()
		ZA1->ZA1_CONMCA := nTotCod
		ZA1->ZA1_COD 	  := cCod
		ZA1->ZA1_EMINAN := SBZ->BZ_EMIN
		ZA1->ZA1_ESTSAN := SBZ->BZ_ESTSEG
		ZA1->ZA1_EMINAT := nTotCod * nDiasPTPed
		ZA1->ZA1_ESTSAT := nTotCod * nDiasEstSeg
		MSUnlock()
	
		RecLock("SBZ" , .F.)
		SBZ->BZ_EMIN 		:= nTotCod * nDiasPTPed
		SBZ->BZ_ESTSEG 	:= nTotCod * nDiasEstSeg
		MSUnlock()
		alert((nTotCod * nDiasPTPed))
		GeraEmail(cCod, SB1->B1_EMIN, SB1->B1_ESTSEG , (nTotCod * nDiasPTPed), (nTotCod * nDiasEstSeg) )
		
	endif
		
		
	dbSelectArea(cAliasSD3)
EndDo
If !lQuery
	RetIndex("SD3")
	dbClearFilter()
	Ferase(cIndex+OrdBagExt())
EndIf

// envia emails
If !Empty(cProdutos)
	EnvEmailProd()
endif


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Devolve ordem principal dos arquivos                         ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
	(cAliasSD1)->(dbCloseArea())
	(cAliasSD2)->(dbCloseArea())
	(cAliasSD3)->(dbCloseArea())
RETINDEX("SD1")
dbClearFilter()
RETINDEX("SD2")
dbClearFilter()
RETINDEX("SD3")
dbClearFilter()            

Return

Static Function GeraEmail(cCod, nPtPedAn, nEstSegAn, nPtPedAt, nEstSegAt)
	
	cProdutos +='      <tr>'
	cProdutos +='        <td colspan="2" >Codigo: '+cCod+'</td>'	
	cProdutos +='        <td colspan="2" >Data Alteração: '+DtoS(date())+'</td>'	
	cProdutos +='        <td colspan="2" >Ponto de pedido Anterior: '+str(nPtPedAn)+'</td>'	
	cProdutos +='        <td colspan="2" >Estoque Segurança Anterior: '+str(nEstSegAn)+'</td>'	
	cProdutos +='        <td colspan="2" >Ponto de pedido Atual: '+str(nPtPedAt)+'</td>'	
	cProdutos +='        <td colspan="2" >Estoque Segurança Atual: '+str(nEstSegAt)+'</td>'	
	cProdutos +='      </tr>'
	
return

				
Static function EnvEmailProd()
local cAnex	  := ""
Local cServer   := Alltrim(getMV("MV_RELSERV"))
Local cAccount  := Alltrim(getMV("MV_RELACNT"))
Local cPassword := Alltrim(getMV("MV_RELPSW"))
Local cEnvia    := cAccount
Local cDestinat	:= "cesar.asilva@totvs.com.br" //Local cDestinat	:= AllTrim(GetMV("SC_MAILIMP"))
Local cTitulo		:= "Logs do processo de importacao " +DtoC(dDatabase)+ " " +Time()
Local cMensag		:='  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'
		cMensag+='<html><head>'
		cMensag+='  <title>Alterações Produtos</title>'
		cMensag+='  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'
		cMensag+='</head><body bgproperties="fixed" style="background-color: rgb(255, 255, 255);">'
		cMensag+='<form name="form1" method="post" action="mailto:%WFMailTo%">'
		cMensag+='  <table border="2" cellpadding="1" width="1280">'
		cMensag+='    <tbody>'
		cMensag+='      <tr>'
		cMensag+='        <td colspan="2" >'
		cMensag+='        <p><strong>Produtos Alterados</strong><br>'
		cMensag+='        </td>'
		cMensag+='      </tr>'
		// insere lista alteraçoes dos produtos no corpo do email
		cMensag+= cProdutos
		cMensag+='</tbody>'
		cMensag+='</table>'
		cMensag+='  <hr>' 
		cMensag+='  <p>Disparo automatico - Não responda essa mensagem!</p>'
		cMensag+='</form>'
		cMensag+='</body>'
		cMensag+='</html>'


U_TCFXMAIL(cMensagem,cTitulo,cDestinat,cAccount,cAnex)

Return
		
		
	
	